<?php

/**
 * Description of RepoPMS
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class RepoPMS extends Repositorio
{

  function __construct()
  {
    $this->tabla = "PMS";
    $this->id = "idPMS";
  }

  function buscar($id)
  {
    $link = $this->OpenDB();
    $query = parent::buscar($id);
    $this->CloseDB($link);
    $p = new PMS();
    $p->setHabitacion($query->habitacion);
    $p->setNombreHuesped($query->nombreHuesped);
    $p->setNumeroReservaPMS($query->numeroReservaPMS);
    return $p;
  }

  function buscarPorNumero($numero)
  {
    $link = $this->OpenDB();
//    $this->PostSql("SET ANSI_NULL ON");
//    $this->PostSql("SET ANSI_WARNINGS ON");
    $query = "SELECT nombreHuesped, numeroReservaPMS FROM PMS WHERE habitacion = " . $numero;
    $habitacionesObj = $this->GetSQL($query);
    $habObj = $habitacionesObj[0];
    $this->CloseDB($link);
    $p = new PMS();
    $p->setHabitacion($numero);
    $p->setNombreHuesped($habObj->nombreHuesped);
    $p->setNumeroReservaPMS($habObj->numeroReservaPMS);
    return $p;
  }

  /**
   * Lista habitaciones con estado In house en PMS ordenadas por room_type y luego por 
   * nombreHuesped (GUEST_NAME) filtrada por parámetro en los campos habitacion, nombreHuesped o acompanante.
   * @param type $buscar
   * @return \PMS 
   */
  function listarHabitacionesIn($buscar = "")
  {
    $link = $this->OpenDB();
//    $this->PostSql("SET ANSI_NULL ON");
//    $this->PostSql("SET ANSI_WARNINGS ON");
    $query = "SELECT habitacion, nombreHuesped, numeroReservaPMS, acompanantes FROM PMS";
    if ($buscar != "")
    {
      $query .= " WHERE habitacion like '%" . $buscar . "%'";
      $query .= " OR nombreHuesped like '%" . $buscar . "%'";
      $query .= " OR acompanantes like '%" . $buscar . "%' ";
    }
    // Se ordena primero por room_type para que traiga primero las habitaciones y luego las cuentas PM
    $query .= " ORDER BY ROOM_TYPE, nombreHuesped ";
    $habitacionesObj = $this->GetSQL($query);
    $this->CloseDB($link);
    $habitaciones = array();
    foreach ($habitacionesObj as $habitacion)
    {
      $PMS = new PMS();
      $PMS->setHabitacion($habitacion->habitacion);
      $PMS->setNombreHuesped($habitacion->nombreHuesped);
      $PMS->setNumeroReservaPMS($habitacion->numeroReservaPMS);
      $PMS->setAcompanantes($habitacion->acompanantes);
      $habitaciones[] = $PMS;
    }
    return $habitaciones;
  }

  function cargarHabitacion(CargoHabitacion $cargoHabitacion, $idComprobante)
  {
    $habitacion = $cargoHabitacion->getPms();
//    $this->PostSql("SET ANSI_NULL ON");
//    $this->PostSql("SET ANSI_WARNINGS ON");
    $query = "SELECT * FROM RESERVATION_GENERAL_VIEW_ONLYIN WHERE ROOM = " . $habitacion;
    $datosPMS = $this->GetSQL($query);
    if (!$datosPMS)
      return $datosPMS;
    $pms = $datosPMS[0];
    $query = "INSERT INTO ifcpost (GUEST_NAME, RESV_NAME_ID, ROOM, 
      ACCOMPANYING_NAMES, COMPUTED_RESV_STATUS, RESV_STATUS, ROOM_TYPE, total, comprobante) VALUES (";
    $query .= "'" . $pms->GUEST_NAME . "', ";
    $query .= $pms->RESV_NAME_ID . ", ";
    $query .= $pms->ROOM . ", ";
    $query .= "'" . $pms->ACCOMPANYING_NAMES . "', ";
    $query .= "'" . $pms->COMPUTED_RESV_STATUS . "', ";
    $query .= "'" . $pms->RESV_STATUS . "', ";
    $query .= "'" . $pms->ROOM_TYPE . "', ";
    $query .= $cargoHabitacion->getTotal() . ", ";
    $query .= $idComprobante . ") ";
    $resultado = $this->PostSQL($query);
    return $resultado;
  }

}

?>
